// https://leetcode.cn/problems/integer-to-roman/description/

// 题干：七个不同的符号代表罗马数字，其值如下：
//I	1
//V	5
//X	10
//L	50
//C	100
//D	500
//M	1000
// 给定一个整数，将其转换为罗马数字

// 示例：
// 输入：num = 3749     输出："MMMDCCXLIX"

// 碎语：很标准的模拟，按照题意解决即可

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

#include <string>

class Solution
{
public:
    string intToRoman(int num)
    {
        int values[] = {
            1000,
            900, 500, 400, 100,
            90, 50, 40, 10,
            9, 5, 4, 1
        };

        string reps[] = {
            "M",
            "CM", "D", "CD", "C",
            "XC", "L", "XL", "X",
            "IX", "V", "IV", "I"
        };

        string res;

        for (int i = 0; i < 13; i++)
        {
            while (num >= values[i])
            {
                num -= values[i];
                res += reps[i];
            }
        }

        return res;
    }
};

int main()
{
    cout << Solution().intToRoman(3749) << endl;

    return 0;
}